/**
 * 代码格式说明
 * 函数名首字母小写,方法名首字母大写
 */



// 页面调用(管理)程序
// 实现:
//    用URL #号后的字符来标识不同的页面
//



/**********************************************************************************
 * class Users
 *******************************/
(function(){

/**
 * 构造函数
 */
var Users = window.Users = function(procFile,sysId,clsId,catClsId)
{
    // 驱动属性
    this.procFile = procFile;
    this.sysId = sysId;
    this.clsId = clsId;
    this.catClsId = catClsId;

    this.sysClsCmd = this.sysId+"/"+this.clsId;
    this.sysClsId = this.sysId + "_" + this.clsId;
    this.sysCatClsCmd = this.sysId+"/"+this.catClsId;

    // 建立页面框架
    this.topPage = $("#Column-B");

    this.page = $("#rbac").clone();
    this.page[0].id = "rbac_clone";        // 防止跟模板的id混淆

    this.header = this.page.find(".header");
    this.footer = this.page.find(".footer");
    this.main   = this.page.find(".main");
}


/**
 * 页面, add
 */
Users.fn = Users.prototype =
{
    //监听
    listening : function()
    {
        if( false == Command.allowAccess( "#"+this.sysClsCmd, location.hash ) ){ return false;  }

        this.topPage.empty().append( this.page );


        this.list();
        this.detail();
        this.add();
        this.modify();
    },

    /**
     * 页面, List
     */
    list : function()
    {
        // 判断命令
        var cmd = new Command( location.hash );
        if( false == cmd.isAcceptable( "#rbac/user/list" ) ){ return false;  }

        var page = $("#rbac_user_list").clone();
        page[0].id =  "rbac_user_list_clone";      //防止与模板源id混淆,导致重复append内容等问题

        $.getJSON( "execute.aspx?cmd=rbac/user/listJson", function( dat ){

            var json = dat.list;
            var retVal = "<form><ul>";
            for( var i=0; i<json.id.length; i++ )
            {
                if ( 0 < json.id[i] )
                {
                    retVal += '<li> <h4>' + json.name[i] + "</h4> ";
                    retVal += $.managementTools( "#rbac/user", json.id[i], "TU" );
                    retVal += '   <a href="#rbac/user/">重置密码</a> ';
                    retVal += '</li>';
                }
            }
            retVal += "</ul></form>";
            page.append( $(retVal) );
        });
        this.main.empty().append( page );
    },

    /**
     * 详细
     */
    detail : function()
    {
        // 判断命令
        var cmd = new Command( location.hash );
        if( false == cmd.isAcceptable( "#rbac/user/detail" ) ){ return false;  }

        // 读取模板
        var page = $("#rbac_user_detail").clone();
        page[0].id =  "rbac_user_detail_clone";      //防止与模板源id混淆,导致重复append内容等问题

        $.getJSON( "execute.aspx?cmd=rbac/user/detailJson&id="+cmd.val(-1), function( json ){

            var retVal = '<div>';
                retVal +='  name:<span class="h4">' + json.name + "</span> <br /> ";
                retVal +='  email:'+ json.email + '<br />';
                retVal +='  created:' + json.createTime + '<br />';
                retVal +='  last login:' + json.loginTime + '<br />';
                retVal +='</div>';

            page.append( $(retVal) );
        });
        this.main.empty().append( page );
    },

    // 页面,增加
    add : function()
    {
        // 判断命令
        var cmd = new Command( location.hash );
        if( false == cmd.isAcceptable( "#rbac/user/add" ) ){ return false;  }

        var page = $("#rbac_user_add").clone();
        page[0].id =  "rbac_user_add_clone";

        this.main.empty().append( page );
        this.submit_add( page.find(".frm") );
    },
    // 提交add的数据
    submit_add : function( frm )
    {
        frm.ajaxSubmit();
    },

    /**
     * 页面修改
     */
    modify : function()
    {
        // 判断命令
        var cmd = new Command( location.hash );
        if( false == cmd.isAcceptable( "#rbac/user/modify" ) ){ return false;  }

        var page = $("#rbac_user_modify").clone();
        page[0].id =  "rbac_user_modify_clone";

        $.getJSON( "execute.aspx?cmd=rbac/user/detailJson&id="+cmd.val(-1), function( json ){

            page.find("[name='id']").val( json.id );
            page.find("[name='name']").val( json.name );
            //page.find("[name='pass']").val( json.pass );
            page.find("[name='email']").val( json.email );

        });

        // 添加到可视区域
        this.main.empty().append( page );

        // 监听提交
        this.submit_modify( page.find(".frm") );
    },
    // 提交add的数据
    submit_modify : function( frm )
    {
        frm.ajaxSubmit();
    }

};//User.fn

})();


/**********************************************************************************
 * class Roles
 *******************************/
(function(){
/**
 * 构造函数
 */
var Roles = window.Roles = function(procFile,sysId,clsId,catClsId)
{
    // 驱动属性
    this.procFile = procFile;
    this.sysId = sysId;
    this.clsId = clsId;
    this.catClsId = catClsId;

    this.sysClsCmd = this.sysId+"/"+this.clsId;
    this.sysClsId = this.sysId + "_" + this.clsId;
    this.sysCatClsCmd = this.sysId+"/"+this.catClsId;

    // 建立页面框架
    this.topPage = $("#Column-B");

    this.page = $("#rbac").clone();
    this.page[0].id = "rbac_clone";        // 防止跟模板的id混淆

    this.header = this.page.find(".header");
    this.footer = this.page.find(".footer");
    this.main   = this.page.find(".main");
}


/**
 * 公共方法
 */
Roles.fn = Roles.prototype =
{
    //监听
    listening : function()
    {
        if( false == Command.allowAccess( "#"+this.sysClsCmd, location.hash ) ){ return false;  }

        this.topPage.empty().append( this.page );

        this.add();
        this.list();
        this.assignUser();
    },

    /**
     * 页面, List
     */
    list : function()
    {
        // 判断命令
        var cmd = new Command( location.hash );
        if( false == cmd.isAcceptable( "#rbac/role/list" ) ){ return false;  }

        var page = $("#rbac_role_list").clone();
        page[0].id =  "rbac_role_list_clone";      //防止与模板源id混淆,导致重复append内容等问题

        $.getJSON( "execute.aspx?cmd=rbac/role/listJson", function( dat ){

            var json = dat.list;
            var retVal = "<ul>";
            for( var i=0; i<json.id.length; i++ )
            {
                if ( 0 < json.id[i] )
                {
                    retVal += '<li>' + " <h4>" + json.name[i] + "</h4>";
                    retVal += '  <a href="#rbac/role/assignUser/'+ json.id[i] +'">指派用户</a>';
                    retVal += '  <a href="#rbac/role/'+ json.id[i] +'">撤销用户</a>';
                    retVal += '  <a href="#rbac/role/'+ json.id[i] +'">授予权限</a>';
                    retVal += '  <a href="#rbac/role/'+ json.id[i] +'">撤销权限</a>';
                    retVal += '  <a href="#rbac/role/'+ json.id[i] +'">修改角色</a>';
                    retVal += '  <a href="#rbac/role/'+ json.id[i] +'">删除角色</a>';
                    retVal += '</li>';
                }
            }
            retVal += "</ul>";
            page.append( $(retVal) );
        });
        this.main.empty().append( page );
    },

    /**
     * 页面, add
     */
    add : function()
    {
        var hash = location.hash;
        if( 0 > hash.indexOf("#rbac/role/add") ){  return false;    }  // 判断是否是自己处理的命令

        var page = $("#rbac_role_add").clone();
        page[0].id = "rbac_role_add_clone";

        this.main.empty().append( page );
        this.submit_add( page.find(".frm") );
    },
    // 提交 add 的数据
    submit_add : function( frm )
    {
        frm.ajaxSubmit();
    },

    assignUser : function()
    {
        // 判断命令
        var cmd = new Command( location.hash );
        if( false == cmd.isAcceptable( "#rbac/role/assignUser" ) ){ return false;  }

        var page = $("#rbac_role_assignUser").clone();
        page[0].id =  "rbac_role_assignUser_clone";      //防止与模板源id混淆,导致重复append内容等问题

        // $.getJSON( "execute.aspx?cmd=rbac/role/listJson", function( dat ){
        //
        //     var json = dat.list;
        //     var retVal = "<ul>";
        //     for( var i=0; i<json.id.length; i++ )
        //     {
        //         if ( 0 < json.id[i] )
        //         {
        //             retVal += '<li>' + " <h4>" + json.name[i] + "</h4>";
        //             retVal += '  <a href="#rbac/role/assignUser/'+ json.id[i] +'">指派用户</a>';
        //             retVal += '  <a href="#rbac/role/'+ json.id[i] +'">撤销用户</a>';
        //             retVal += '  <a href="#rbac/role/'+ json.id[i] +'">授予权限</a>';
        //             retVal += '  <a href="#rbac/role/'+ json.id[i] +'">撤销权限</a>';
        //             retVal += '  <a href="#rbac/role/'+ json.id[i] +'">修改角色</a>';
        //             retVal += '  <a href="#rbac/role/'+ json.id[i] +'">删除角色</a>';
        //             retVal += '</li>';
        //         }
        //     }
        //     retVal += "</ul>";
        //     page.append( $(retVal) );
        // });

        this.main.empty().append( page );
        this.submit_assignUser( page.find(".frm") );
    },
    // 提交assignUser的数据
    submit_assignUser : function( frm )
    {
        frm.ajaxSubmit();
    }

}; //Roles.fn

})();

/**********************************************************************************
 * class Permissions
 *******************************/

(function(){
/**
 * 构造函数
 */
var Permissions = window.Permissions = function(procFile,sysId,clsId,catClsId)
{
    // 驱动属性
    this.procFile = procFile;
    this.sysId = sysId;
    this.clsId = clsId;
    this.catClsId = catClsId;

    this.sysClsCmd = this.sysId+"/"+this.clsId;
    this.sysClsId = this.sysId + "_" + this.clsId;
    this.sysCatClsCmd = this.sysId+"/"+this.catClsId;

    // 建立页面框架
    this.topPage = $("#Column-B");

    this.page = $("#rbac").clone();
    this.page[0].id = "rbac_clone";        // 防止跟模板的id混淆

    this.header = this.page.find(".header");
    this.footer = this.page.find(".footer");
    this.main   = this.page.find(".main");
}

/**
 * 公共方法
 */
Permissions.fn = Permissions.prototype =
{
    //监听
    listening : function()
    {
        if( false == Command.allowAccess( "#"+this.sysClsCmd, location.hash ) ){ return false;  }

        this.topPage.empty().append( this.page );

        this.add();
        this.list();
    },

    /**
     * 页面, List
     */
    list : function()
    {
        // 判断命令
        var cmd = new Command( location.hash );
        if( false == cmd.isAcceptable( "#rbac/permission/list" ) ){ return false;  }

        var page = $("#rbac_permission_list").clone();
        page[0].id = "rbac_permission_list_clone";      //防止与模板源id混淆,导致重复append内容等问题

        $.getJSON( "execute.aspx?cmd=rbac/permission/listJson", function( dat ){

            var json = dat.list;
            var retVal = "<ul>";
            for( var i=0; i<json.id.length; i++ )
            {
                if ( 0 < json.id[i] )
                {
                    retVal += '<li><h4>' + json.resourceTable[i] + ' ' + json.resourceId[i] + json.remarks[i] + '</h4> ';
                    retVal += $.managementTools( "#rbac/permission", json.id[i] );
                    retVal += '</li>';
                }
            }
            retVal += "</ul>";
            page.append( $(retVal) );
        });
        this.main.empty().append( page );
    },

    /**
     * 页面, add
     */
    add : function()
    {
        var hash = location.hash;
        if( 0 > hash.indexOf("#rbac/permission/add") ){  return false;    }  // 判断是否是自己处理的命令

        var page = $("#rbac_permission_add").clone();
        page[0].id = "rbac_permission_add_clone";

        this.main.empty().append( page );
        this.submit_add( page.find(".frm") );
    },
    // 提交 add 的数据
    submit_add : function( frm )
    {
        frm.ajaxSubmit();
    }

};//Permissions.fn

})();